package eSchool.DataLayer;

import eSchool.BL.AlunoInscrito;
import eSchool.BL.AlunosInscritos;
import eSchool.BL.CriteriosPesquisa;
import eSchool.Utils.DateTime;
import eSchool.Utils.TextHelper;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class AccessAlunoInscritoDAO implements IAlunoInscritoDAO {

    private Connection connection = null;
    
    public AccessAlunoInscritoDAO(){
    }
    
    public int insertAlunoInscrito(AlunoInscrito alunoInscrito) throws Exception {
        Connection con = connection;
        int resultado = -1;

        if (con == null) {
            con = AccessDAOFactory.createConnection();
        }

        String sqlIns = "Insert into inscricao (ano, semestre, idDisciplina, numAluno, dataInscricao)";
        sqlIns += " values (?,?,?,?,?)";
        PreparedStatement pst = con.prepareStatement(sqlIns);
        pst.setString(1, TextHelper.toString(alunoInscrito.getAno()));
        pst.setInt(2, alunoInscrito.getSemestre());
        pst.setString(3, alunoInscrito.getCodDisciplina());
        pst.setString(4, alunoInscrito.getNumAluno());
        pst.setDate(5,(Date) (new DateTime()).getDate());
        
        resultado = pst.executeUpdate();

        if (connection == null) {
            con.close();
            con = null;
        }

        return resultado;
    }

    public boolean deleteAlunoInscrito(AlunoInscrito alunoInscrito) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
     public AlunoInscrito findAlunoInscrito(String numAluno, String codDisciplina) throws Exception {
        AlunoInscrito aluno = null;

        return findAlunoInscrito(aluno, numAluno, codDisciplina);
    }
    

    public AlunoInscrito findAlunoInscrito(AlunoInscrito alunoInscrito, String numAluno, String codDisciplina) throws Exception {
        Connection con = connection;
        
        if (con == null) {
            con = AccessDAOFactory.createConnection();
        }

        String sqlSlct = " SELECT Aluno.numAluno, Aluno.nomeAluno, Aluno.moradaAluno, Aluno.codPostalAluno, Aluno.localidadeAluno, Aluno.sexoAluno, Aluno.emailAluno, Aluno.telefoneAluno, Aluno.obsAluno, " +
                         " Inscricao.ano, Inscricao.semestre, Inscricao.idDisciplina, Inscricao.dataInscricao " +
                         " FROM Aluno, Inscricao" +
                         " WHERE Aluno.numAluno = ?" +
                         "   AND Inscricao.idDisciplina = ?";
        
        PreparedStatement pst = con.prepareStatement(sqlSlct);
        pst.setString(1, numAluno);
        pst.setString(2, codDisciplina);

        ResultSet rs = pst.executeQuery();
        
        while (rs.next()) {
            alunoInscrito.setNumAluno(rs.getString("numAluno"));
            alunoInscrito.setNome(rs.getString("nomeAluno"));
            alunoInscrito.setMorada(rs.getString("moradaAluno"));
            alunoInscrito.setCodPostal(rs.getString("codPostalAluno"));
            alunoInscrito.setLocalidade(rs.getString("localidadeAluno"));           
            alunoInscrito.setSexo(rs.getString("sexoAluno"));
            alunoInscrito.setEmail(rs.getString("emailAluno"));
            alunoInscrito.setTelefone(rs.getString("telefoneAluno"));
            alunoInscrito.setObs(rs.getString("obsAluno"));
            alunoInscrito.setAno(rs.getInt("ano"));
            alunoInscrito.setSemestre(rs.getInt("semestre"));
            alunoInscrito.setCodDisciplina(rs.getString("idDisciplina"));            
        }
        
        rs.close();
                
        if (connection == null) {
            con.close();
            con = null;
        }
        return alunoInscrito;
    }

    public AlunoInscrito findAlunoInscrito(AlunoInscrito alunoInscrito, String numAluno) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean updateAlunoInscrito(AlunoInscrito alunoInscrito) throws Exception {
         Connection con = connection;

        if (con == null) {
            con = AccessDAOFactory.createConnection();
        }

        String sqlUpd = " Update aluno SET  " +
                        " ano = ?, " +
                        " semestre = ?, " +                        
                        " dataInscricao = ? " +
                        " WHERE numAluno = ?" + 
                        "  AND idDisciplina = ?, ";

        PreparedStatement pst = con.prepareStatement(sqlUpd);
        
        
        pst.executeUpdate();

        if (connection == null) {
            con.close();
            con = null;
        }

        return true;
    }

    public AlunosInscritos selectAlunoInscritoTO(CriteriosPesquisa criterio) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public AlunosInscritos selectAlunoInscritoTO(AlunosInscritos inscricoes, CriteriosPesquisa criterio) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
